var Ticket = {};

Ticket.setTypeEmail = function () {
    Ticket._setType('email');
    $('#cust-email-input').attr('placeholder', '');
    $('#tkReply').removeClass('note');
    $('#cust-email-input').attr('required', '');
    $('#sendBtn').html('Отправить');    
}
Ticket.setTypePhone = function () {
    Ticket._setType('phone'); 
    $('#cust-email-input').attr('placeholder', '(необязательно)');  
    $('#tkReply').addClass('note'); 
    $('#cust-email-input').removeAttr('required'); 
    $('#sendBtn').html('Создать'); 
}
Ticket._setType = function (type) {
    $('#type').val(type);   
}

Ticket.initWysiwyg = function () {
    $('#editor').wysiwyg();
}

Ticket.initFileUpload = function (mailbox_hash) {
    var ul = $('ul.attachments');
    $('#file_upload').fileupload({
        dataType: 'json',
        autoUpload: true,
 
        // Функция будет вызвана при помещении файла в очередь
        add: function (e, data) {
            data.url = '/ticket/uploadfiles/' + mailbox_hash;
            
            // Автоматически загружаем файл при добавлении в очередь
            var jqXHR = data.submit(function (e, data) {
                console.log(data);
            });
        },
 
        /*progress: function(e, data){
 
            // Вычисление процента загрузки
            var progress = parseInt(data.loaded / data.total * 100, 10);
 
            // обновляем шкалу
            data.context.find('input').val(progress).change();
 
            if(progress == 100){
                data.context.removeClass('working');
            }
        }, */
        
        done: function (e, data) {
            var tpl = $(data.result.tpl);
            data.context = tpl.appendTo(ul);
            tpl.find('a.remove').click(function(){ 
                tpl.fadeOut(function(){
                    tpl.remove();
                });
                return false;
            });
        },
        
        fail:function(e, data){
            // что-то пошло не так
            //alert('Error');  
        }
 
    });
}

 function pasteHtmlAtCaret(html, selectPastedContent) {
    var sel, range;
    if (window.getSelection) {
        // IE9 and non-IE
        sel = window.getSelection();
        if (sel.getRangeAt && sel.rangeCount) {
            range = sel.getRangeAt(0);
            range.deleteContents();

            // Range.createContextualFragment() would be useful here but is
            // only relatively recently standardized and is not supported in
            // some browsers (IE9, for one)
            var el = document.createElement("div");
            el.innerHTML = html;
            var frag = document.createDocumentFragment(), node, lastNode;
            while ( (node = el.firstChild) ) {
                lastNode = frag.appendChild(node);
            }
            var firstNode = frag.firstChild;
            range.insertNode(frag);

            // Preserve the selection
            if (lastNode) {
                range = range.cloneRange();
                range.setStartAfter(lastNode);
                if (selectPastedContent) {
                    range.setStartBefore(firstNode);
                } else {
                    range.collapse(true);
                }
                sel.removeAllRanges();
                sel.addRange(range);
            }
        }
    } else if ( (sel = document.selection) && sel.type != "Control") {
        // IE < 9
        var originalRange = sel.createRange();
        originalRange.collapse(true);
        sel.createRange().pasteHTML(html);
        if (selectPastedContent) {
            range = sel.createRange();
            range.setEndPoint("StartToStart", originalRange);
            range.select();
        }
    }
}

// вспомогательная функция, которая форматирует размер файла
function formatFileSize(bytes) {
    if (typeof bytes !== 'number') {
        return '';
    }

    if (bytes >= 1000000000) {
        return (bytes / 1000000000).toFixed(2) + ' GB';
    }

    if (bytes >= 1000000) {
        return (bytes / 1000000).toFixed(2) + ' MB';
    }

    return (bytes / 1000).toFixed(2) + ' KB';
}






$(document).ready(function () { 
    Ticket.initWysiwyg(); 
    
    $('div[id^=save_reply_editor]').wysiwyg(); 
    $('div[id=save_autoreply_editor]').wysiwyg();
    
    $('img[src^=cid]').each(function() {
        var id = $(this).attr('src').substr(4);
        var src = $('.attachments ul li#'+id+' a').attr('href');
        $(this).attr('src', src);
    });
    
    $('form').each(function () {
        $(this).validate({
            rules: {
                email: {
                    required: true,
                    email: true,
                    remote: '/user/add?check_email=1'
                }    
            },
            messages: {
                customer: "Введите имя клиента",
                email: {
                    required: "Введите Email",
                    email: "Email должен быть в формате name@domain.com",
                    remote: "Пользователь с таким логином уже зарегистрирован"
                },
                mailbox_email: {
                    required: "Введите Email",
                    email: "Email должен быть в формате name@domain.com"   
                },
                client_email: {
                    required: "Введите Email",
                    email: "Email должен быть в формате name@domain.com"   
                },
                invite_email: {
                    required: "Введите Email",
                    email: "Email должен быть в формате name@domain.com"  
                },
                user_email: {
                    required: "Введите Email",
                    email: "Email должен быть в формате name@domain.com"   
                },
                subject: "Введите тему",
                reply: "Введите текст сообщения",
                name: "Введите имя",
                password: "Введите пароль"
            }
        });
    });   
    
    $('#actionsBoxMenu li.dropdown a').click(function () {
        var dropdown = $(this).parent().find('div.dropdown-menu');
        if (dropdown.css('display') == 'none') {
            dropdown.show();
        } else {
            dropdown.hide();
        }
        $(document).click(function (event) {
            if ($(event.target != this)) {
                dropdown.hide();
            }
        });
    }); 
    $('#tblTickets input[type=checkbox]').change(function () {
        if ($(this).attr('id') == 'toggleAll') {
            if ($(this).prop('checked') == true) {
                $('#tblTickets tbody input[type=checkbox]').prop('checked', true).closest('tr').addClass('selected');    
            } else {
                $('#tblTickets tbody input[type=checkbox]').prop('checked', false).closest('tr').removeClass('selected'); 
            }
        }
        if ($(this).prop('checked') == true) {
            $(this).closest('tr').addClass('selected');
        } else {
            $(this).closest('tr').removeClass('selected');   
        }
        var all_count = $("#tblTickets tbody input[type=checkbox]").length,
            checked_count = $("#tblTickets tbody input[type=checkbox]:checked").length;
        if (checked_count == 0) {
            $('#actionsBox').hide();    
        } else {
            $('#actionsBox').show();
        }
        if (all_count == checked_count) {
            $('#toggleAll').prop('checked', true);   
        } else {
            $('#toggleAll').prop('checked', false);   
        }
    }); 
    
    $('a.delete').click(function () {
        var noty = $('#notyContainer'),
            text = $(this).attr('data-text'),
            href = $(this).attr('href');
            
        noty.find('.noty_text').html(text);
        noty.find('.btn-success').attr('href', href);
        
        noty.show();
        $('#noty_modal').show();
        
        return false;
    });        
}); 